<?php

    /**
     * Interface
     *
     * @package      Core
     * @subpackage   Plugin
     *
     * @license      GNU Lesser General Public Licence see LICENCE-LGPL file or http://www.gnu.org/licenses/lgpl.html
     */
	interface Core_Plugin_Interface
	{
        /**
         * This method is called before each action
         *
         * @param       array       $params : plugin parameters for the current action
         * @return      Core_Selector_Action|null    if action should change
         */
        public function beforeAction($params);

        /**
         * This method is called after the execution of the action, and before the output of the response
         *
         * @return      void
         */
        public function beforeOutput();

        /**
         * This method is called after the output.
         *
         * @return      void
         */
        public function afterProcess();

        /**
         * Returns dependencies list.
         *
         * @return      array
         */
        public function getDependencies();
    }
